package cn.com.huzo.repository.tech;

import cn.com.huzo.model.entities.tech.PieceYardageLinesEntity;
import cn.com.huzo.model.entities.tech.PieceYardageLinesSizeGradeEntity;
import huzofw.repository.GenericRepository;
import java.util.List;

/**
 * 尺码单用量数据访问对象接口。
 *
 * @author 吴旭
 */
public interface PieceYardageLinesSizeGradeRepository extends GenericRepository<PieceYardageLinesSizeGradeEntity, String> {

    /**
     * 根据给定的单耗标识，得到成品色明细数据列表
     * <p>
     * @param headerId 单耗ID
     * @return 单耗明细数据列表
     */
    List<PieceYardageLinesSizeGradeEntity> fetchByHeaderId(Long headerId);

    /**
     * 保存
     *
     * @param itemList 要保存的数据
     * @return
     */
    Integer insert(List<PieceYardageLinesSizeGradeEntity> itemList);

    /**
     * 粘贴时，也同时引入相应的尺码单耗
     *
     * @param headerId 单耗ID
     * @param CopiedLinesId 要粘贴的明细ID
     * @return
     */
    Integer insertLinesFromClipboard(Long headerId, String CopiedLinesId);

    /**
     * 引入其他单耗时，也同时引入相应的尺码单耗
     *
     * @param headerId 单耗ID
     * @param importedBomHeaderId 要引入的单耗ID
     * @return
     */
    Integer importLinesFromOtherBom(Long headerId, Long importedBomHeaderId);

    /**
     * 引入尺码单耗后，需要更新对应关系为当前单耗明细
     *
     * @param headerId 当前单耗ID
     * @return
     */
    Integer updateParentLinesIdForImportedLines(Long headerId);

    /**
     * 根据单耗明细标识删除
     *
     * @param parentLinesId 单耗明细标识
     * @return 影响的行数
     */
    Integer deleteByParentLinesId(String parentLinesId);
    
    /**
     * 批量清空单耗用量。
     *
     * @param itemList 所选单耗
     * @return 影响行数
     */
    Integer batchClearLinesSizePieceYardage(List<PieceYardageLinesEntity> itemList);
}
